import { ElMessage, ElMessageBox, ElNotification } from 'element-plus'

/**
 * 封装一个全局的 message 方法，用于显示消息提示
 * @param message 消息内容
 * @param type 消息类型，默认为 success
 * @param [options] 消息选项
 */
export const message = (
  message: string,
  type: 'success' | 'warning' | 'info' | 'error' = 'success',
  options: any = {}
) => {
  ElMessage({message, type, ...options})
}

/**
 * 封装一个全局的 confirm 方法，用于显示确认对话框
 @param title 对话框标题，默认为 '提示'
 * @param message 对话框内容
 * @param [options] 对话框选项
 * @return Promise<boolean>
 */
export const confirm = (title: string = '提示', message: string, options: any = {}) => {
  if (Object.keys(options).length === 0) {
    options = {
      confirmButtonText: '确定',
      cancelButtonText: '取消',
      type: 'warning'
    }
  }
  return new Promise((resolve, reject) => {
    ElMessageBox.confirm(message, title, options)
      .then(() => {
        resolve(true)
      })
      .catch(() => {
        reject(false)
      })
  })
}

/**
 * 封装一个全局的 notification 方法，用于显示通知
 * @param title 通知标题，默认为 '提示'
 * @param message 通知内容
 * @param [options] 通知选项
 */
export const notification = (title: string = '提示', message: string, options: any = {}) => {
  ElNotification({
    title,
    message,
    ...options
  })
}

/**
 * 统一导出一个 hook 方法对象，包含所有 hook 方法
 */
export default {
  message,
  confirm,
  notification
}
